import requests
import json

url = "https://gigachat.devices.sberbank.ru/api/v1/chat/completions"


def get_token():
    url = "https://ngw.devices.sberbank.ru:9443/api/v2/oauth"

    payload = 'scope=GIGACHAT_API_PERS'
    headers = {
        'Content-Type': 'application/x-www-form-urlencoded',
        'Accept': 'application/json',
        'RqUID': '<ВАШ Client Secret>',
        'Authorization': 'Basic <ВАШИ Данные Авторизации>'
    }

    response = requests.request(
        "POST", url, headers=headers, data=payload, verify='chain.pem')

    return response.json()


def get_answer(text, access_token):
    payload = json.dumps({
        # есть еще GigaChat-Pro (50к бесплатных) и GigaChat-Plus (платный)
        "model": "GigaChat",
        "messages": [
            {
                "role": "user",
                "content": text  # ваш запрос
            }
        ],
        "temperature": 1,
        "top_p": 0.1,
        "n": 1,
        "stream": False,
        "max_tokens": 512,  # максимальное кол-во использованных токенов
        "repetition_penalty": 1
    })

    headers = {
        'Content-Type': 'application/json',
        'Accept': 'application/json',
        'Authorization': f'Bearer {access_token}'  # токен доступа
    }

    response = requests.request(
        "POST", url, headers=headers, data=payload, verify='chain.pem')

    return response.json()


def get_img(fileid, access_token):  # получение изображения по fileId
    url = f"https://gigachat.devices.sberbank.ru/api/v1/files/{fileid}/content"

    payload = {}
    headers = {
        'Accept': 'application/jpg',
        'Authorization': f'Bearer {access_token}'
    }

    response = requests.request(
        "GET", url, headers=headers, data=payload, verify='chain.pem')

    return response.content
